package com.example.config;

import com.example.comon.domain.LoginUser;
import com.example.demo.domain.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

/**
 * 自定义身份认证处理类（核心）
 */
@Service
public class UserDetailsServiceImpl implements UserDetailsService {


    /**
     * 通过账号获取数据库的用户信息 并封装成UserDetails
     * 框架再通过查询的用户信息与用户输入的账号密码做比对
     * @param username
     * @return
     * @throws UsernameNotFoundException
     */
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //todo  作业： 将用户账号密码保存到数据库 并且修改下面代码为从数据库查询信息，而不是写死。
        // 重点：保存数据的用户密码需要进行加密保存 加密方法：SecurityUtils.encryptPassword("123456")
        User user = new User();
        user.setId(1);
        user.setUsername("111");
        user.setPassword(SecurityUtils.encryptPassword("123456"));
        return createLoginUser(user);
    }



    public UserDetails createLoginUser(User user) {
        LoginUser loginUser =new LoginUser(user.getId(),user);
        return loginUser;
    }
}
